本发明提出了一种基于SVC的P2PVoD系统的视音频同步方法,属于多媒体互联网应用领域。本发明将音频流复合到SVC视频流中,并将SVC视频编码特征与Bittorrent协议相结合,改进Torrent文件的封装格式,从而保证了基于SVC的视音频数据的传输同步;采用基于缓存的质量自适应和顺序下载相结合的方式,保证了视音频播放的流畅性并可以提高视音频播放的品质,实现了SVC视音频分片的调度同步;以SVC视频为主媒体流,音频为从媒体流,播放时以视频分片的播放时间信息更新同步时钟,并以该时钟同步解码和播放相应音频分片,从而实现视音频媒体间的播放同步。
1.一种基于SVC的P2PVoD系统的视音频同步方法,其特征在于包括以下步骤:S1、在服务器端将SVC视频流按照等时长分割成N个视频块,将该N个视频块分别划分为M层视频分片,其中各视频块中最底层的视频分片构成视频基础层,其上的每一层视频分片均构成一个视频增强层;将音频流按照等时长分割成N个音频层分片;将该音频层作为该视频基础层的下一层,从而生成视音频分层分片文件,其中SVC视频流分割成视频块的单位时长与音频流分割成音频层分片的单位时长相等,且N、M均为大于零的整数;S2、在服务器端,将该视音频分层分片文件的相关信息封装至Torrent文件中;S3、启动视音频分层分片下载线程,客户端从服务器端下载该Torrent文件,从该Torrent文件中提取该视音频分层分片文件的相关信息初始化视频解码器和音频解码器;S4、客户端下载该视音频分层分片文件;S5、客户端将该视音频分层分片文件中的SVC视频数据和音频数据分别送往对应的视频解码器和音频解码器进行解码,并播放解码后的视音频数据。
2.根据权利要求1所述的基于SVC的P2PVoD系统的视音频同步方法,其特征在于:在所述步骤S1中音频层文件名为0;设定空间分层数为D
id和质量分层数Q
id,则SVC视频各分层文件名为DQ
id=1+16×D
id+Q
id。
3.根据权利要求1所述的基于SVC的P2PVoD系统的视音频同步方法,其特征在于:在所述步骤S2中该Torrent文件的封装格式增加了音频采样率、视频帧率、视频帧数、每个GOP所含视频帧数、每个视频分片所含GOP数目、SVC分层数、音频层文件长度、音频层文件标识符、视频基础层和各视频增强层的长度、视频基础层和各视频增强层标识符、各视音频分片长度和视音频分片总数中至少一个,其中该SVC分层数包括SVC视频层数和音频层数。
4.根据权利要求1所述的基于SVC的P2PVoD系统的视音频同步方法,其特征在于:在所述步骤S4中根据距离当前的播放时间点t
play的远近,将视音频分层分片文件由近至远划分为高优先级区域、中优先级区域和低优先级区域,其下载优先级逐渐降低。
5.根据权利要求4所述的基于SVC的P2PVoD系统的视音频同步方法,其特征在于:在播放视音频之前,高优先级区域内面向播放时间点t
play一侧的部分视音频数据缓存于下载缓冲区,且该部分视音频数据的缓冲时长为PRE
TIME、下载层数为L
pre,其中该下载层数L
pre根据网络带宽确定且至少包括音频层和视频基础层。
6.根据权利要求5所述的基于SVC的P2PVoD系统的视音频同步方法,其特征在于:客户端周期性地判断是否需要重新确定该下载缓冲区的下载层数L
pre:设定下载缓冲区中待播放视音频数据的时长为t
buf=t
schedule-t
play,其中t
schedule表示当前的下载时间点,t
play表示当前的播放时间点,当t
buf减小至下限阈值时表示下载速率过慢,为了保证视音频播放的流畅性,减少下载一层视频增强层分片,下载层数减一L
pre--;当t
buf增大至上限阈值时表示下载速率过高,为了提高视音频播放的品质,确定增加下载一层视频增强层分片,下载层数加一L
pre++。
7.根据权利要求4~6中任何一项所述的基于SVC的P2PVoD系统的视音频同步方法,其特征在于:该高级优先区域中视音频数据的下载顺序为:音频层分片、视频基础层分片、视频增强层分片。
8.根据权利要求1所述的基于SVC的P2PVoD系统的视音频同步方法,其特征在于:所述步骤S5由以下步骤组成:设定播放同步时钟Tvideo来记录视频分片数据的播放时间;启动视频播放线程,从下载缓冲区中获取缓存的视频分片数据进行解码播放,并更新播放同步时钟Tvideo;启动音频播放线程,根据播放同步时钟Tvideo从下载缓冲区中获取缓存的音频分片数据进行解码播放,从而实现视音频播放同步。
技术领域本发明涉及一种视音频同步方法,尤其涉及一种基于SVC的P2PVoD系统视音频同步方法。xa0
背景技术随着宽带通信的广泛运用,互联网上的多媒体应用变得越来越流行。将SVC(Scalablexa0Videoxa0Coding,可伸缩视频编码)应用于P2P(Peer-to-Peer,对等互联网技术)流媒体系统是解决P2P系统带宽容量显著变化和用户终端异构多样问题最有前途的方案。SVC允许“视频序列一次编码多种解码”,能够提供复合时空分辨率和高保真度的视频流,因此它能有效地满足P2P系统根据可用带宽进行码率调整的要求,同时可以很好地适应不同用户终端的时空分辨率,为用户提供更好的服务质量和用户体验。xa0对于一个完整的基于SVC的P2P流媒体系统来说,SVC视频流与相应的音频流之间的同步非常关键,同步方法设计的好坏将直接影响系统的整体性能。视音频的同步与人的视听觉特性相关,图1将人的视听觉主观评价划分为5个等级:在声音超前20ms至声音落后90ms范围内,人们感觉不出视听质量的变化,该范围被称为不可觉察范围;一般将主观评价下降少于0.5级的范围称作可觉察范围,对应于声音超前45ms至落后125ms;将主观评价下降少于1.5级的范围认为是可接受范围,对应于声音超前90ms至落后185ms;在可接受范围内的视音频偏移被认为是同步的,但是当主观评价下降超过1.5级时,视音频偏移将被认为不同步。xa0虽然P2P流媒体系统的视音频同步已经有比较成熟的解决办法,比较经典的有基于RTP/RTCP的视音频同步方法和MPEG-4封装时间戳同步方法等。但是目前P2P流媒体系统的视音频同步方法并不适合基于SVC的P2P流媒体系统的视音频同步需求。xa0基于RTP/RTCP协议的视音频同步一般以音频为主媒体流,视频为从媒体流,在接收端基于同一时间轴,通过比较最近播放的音频帧和视频帧的播放时间标签判断同步关系,对视频帧采取重复或丢弃的方法实现视音频同步控制。该同步方法的优点是借助RTP/RTCP协议进行视音频的封装传输以及同步控制,技术应用成熟广泛。但是该方法的缺点是它只适合单层视频流,目前尚没有将SVC视频流封装成RTP数据包的方法,而且该方法需要对每个RTCPxa0SR(Senderxa0Reports)报文进行处理,对SVC这种多层视频流来说,算法复杂度较高。xa0MPEG-4封装同步与基于RTP/RTCP协议的同步类似,也使用时间戳进行视音频同步控制。MPEG-4的定时模型为其I、B、P帧定义了解码时间戳(DTS)和合成时间戳(CTS),DTS用来表示解码时间,当DTS的时刻到来时,访问单元的解码将开始,CTS表示合成单元在该时刻开始表现。由于每个视频帧的表现时间相对于解码时间都推迟了一个周期T,所以相应音频帧的解码也要推迟一个周期。该方法的显著优点在于MP4可以根据网络带宽变化,通过选择性丢弃B帧或P帧的方式解决网络拥塞问题,同时对异构终端具有较好的适应性,特别是移动终端。但该方法同样存在只适合单层视频流的缺点,将SVC视频流封装进MP4的复杂度较高。xa0由此可见,目前基于SVC的P2P流媒体系统的视频流与对应的音频流还是需要独立编码、独立传输、独立解码和播放,同时对各个阶段进行同步控制最后才能获得良好的播放效果。xa0
发明内容本发明旨在解决现有技术中存在的技术问题,特别创新地提出了一种基于SVC的P2PVoD系统视音频同步方法,实现了基于SVC的视音频数据的传输同步。xa0为了实现本发明的上述目的,本发明提供了一种基于SVC的P2PVoD系统的视音频同步方法,其特征在于包括以下步骤:xa0S1、在服务器端将SVC视频流按照等时长分割成N个视频块,将该N个视频块分别划分为M层视频分片,其中各视频块中最底层的视频分片构成视频基础层,其上的每一层视频分片均构成一个视频增强层;将音频流按照等时长分割成N个音频层分片;将该音频层作为该视频基础层的下一层,从而生成视音频分层分片文件,其中SVC视频流分割成视频块的单位时长与音频流分割成音频层分片的单位时长相等,且N、M均为大于零的整数;xa0S2、在服务器端,将该视音频分层分片文件的相关信息封装至Torrent文件中;xa0S3、启动视音频分层分片下载线程,客户端从服务器端下载该Torrent文件,从该Torrent文件中提取该视音频分层分片文件的相关信息初始化视频解码器和音频解码器;xa0S4、客户端下载该视音频分层分片文件;xa0S5、客户端将该视音频分层分片文件中的SVC视频数据和音频数据分别送往对应的视频解码器和音频解码器进行解码,并播放解码后的视音频数据。由此实现了基于SVC的视音频数据的传输同步。xa0在所述步骤S1中音频层文件名为0;设定空间分层数为D
id和质量分层数xa0Q
id,则SVC视频各分层文件名为DQ
id=1+16×D
id+Q
id,便于客户端识别视音频分层分片文件中的各层文件。xa0在所述步骤S2中该Torrent文件的封装格式增加了音频采样率、视频帧率、视频帧数、每个GOP所含视频帧数、每个视频分片所含GOP数目、SVC分层数、音频层文件长度、音频层文件标识符、视频基础层和各视频增强层的长度、视频基础层和各视频增强层标识符、各视音频分片长度和视音频分片总数中至少一个,其中该SVC分层数包括SVC视频层数和音频层数。对Torrent文件的封装格式进行改进,保证了SVC视音频流的同步传输。xa0在所述步骤S4中根据距离当前的播放时间点t
play的远近,将视音频分层分片文件由近至远划分为高优先级区域、中优先级区域和低优先级区域,其下载优先级逐渐降低。划分优先级区域,按顺序下载视音频数据,保证了视音频播放的流畅性。xa0在播放视音频之前,高优先级区域内面向播放时间点t
play一侧的部分视音频数据缓存于下载缓冲区,且该部分视音频数据的缓冲时长为PRE
TIME、下载层数为L
pre,其中该下载层数L
pre根据网络带宽确定且至少包括音频层和视频基础层。在播放视音频之前根据初始网络带宽确定下载层数L
pre,缓冲视音频数据,保证了视频播放的流畅性。xa0客户端周期性地判断是否需要重新确定该下载缓冲区的下载层数L
pre:设定下载缓冲区中待播放视音频数据的时长为t
buf=t
schedule-t
play,其中t
schedule表示当前的下载时间点,t
play表示当前的播放时间点,当t
buf减小至下限阈值时表示下载速率过慢,为了保证视音频播放的流畅性,减少下载一层视频增强层分片,下载层数减一L
pre--;当t
buf增大至上限阈值时表示下载速率过高,为了提高视音频播放的品质,确定增加下载一层视频增强层分片,下载层数加一L
pre++。实现了xa0下载缓冲区的质量自适应调节,进一步保证了视音频播放的流畅性,并且提高了视音频播放的品质。xa0该高级优先区域中视音频数据的下载顺序为:音频层分片、视频基础层分片、视频增强层分片。xa0所述步骤S5由以下步骤组成:xa0设定播放同步时钟Tvideo来记录视频分片数据的播放时间;xa0启动视频播放线程,从下载缓冲区中获取缓存的视频分片数据进行解码播放,并更新播放同步时钟Tvideo;xa0启动音频播放线程,根据播放同步时钟Tvideo从下载缓冲区中获取缓存的音频分片数据进行解码播放,从而实现视音频播放同步。xa0以SVC视频为主媒体流,音频为从媒体流,播放时以视频分片的播放时间信息更新同步时钟,并以该时钟同步解码和播放相应音频分片,从而实现视音频媒体间的播放同步。xa0综上所述,由于采用了上述技术方案,本发明的有益效果是:xa01、将音频流复合到SVC视频流中,并将SVC视频编码特征与Bittorrent协议相结合,改进Torrent文件的封装格式,从而保证了基于SVC的视音频数据的传输同步;xa02、采用基于缓存的质量自适应和顺序下载相结合的方式,保证了视音频播放的流畅性并可以提高视音频播放的品质,实现了SVC视音频分片的调度同步;xa03、以SVC视频为主媒体流,音频为从媒体流,播放时以视频分片的播放时间信息更新同步时钟,并以该时钟同步解码和播放相应音频分片,从而实现视音频媒体间的播放同步。xa0本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描xa0述中变得明显,或通过本发明的实践了解到。xa0
附图说明本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:xa0图1是视音频同步标准示意图;xa0图2是基于SVC的P2PVoD系统中视音频分层分片文件的结构示意图;xa0图3是基于SVC的P2PVoD系统中Torrent文件的封装格式示意图;xa0图4是基于SVC的P2PVoD系统中三优先级区域的示意图。xa0
具体实施方式下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。xa0本发明主要实现了P2PVoD系统中SVC(Scalablexa0Videoxa0Coding,可伸缩视频编码)视音频的传输同步和播放同步。xa0该基于SVC的P2PVoD系统的视音频同步方法由以下步骤组成:xa0S1、为了实现SVC视频流与音频流的同步传输,如图2所示,在服务器端将SVC视频流按照等时长(诸如按照每一秒)分割成N个视频块Videoxa0Chunk,将该N个视频块Videoxa0Chunk分别划分为M层视频分片Videoxa0Piece,其中各视频块Videoxa0Chunk中最底层的视频分片Videoxa0Piece构成视频基础层,其上的每一层视频分片Videoxa0Piece均构成一个视频增强层;将音频流按照等时长(诸如xa0按照每一秒)分割成N个音频层分片;将该音频层分片作为视频基础层的下一层,从而生成视音频分层分片文件,其中SVC视频流分割成视频块的单位时长与音频流分割成音频层分片的单位时长相等,且N、M均为大于零的整数。xa0为了便于客户端识别视音频分层分片文件中的各层文件,本发明采用以下方式对各层文件进行命名。音频层文件名为0;设定空间分层数为D
id和质量分层数Q
id,则SVC视频各分层文件名为DQ
id=1+16×D
id+Q
id。xa0如图2所示,本实施例中将SVC视频流划分为四层,针对视频基础层,其文件名为DQ
id=1+16×D
id+Q
id=1+16×0+0=1;xa0针对视频第一增强层,其文件名为DQ
id=1+16×D
id+Q
id=1+16×0+1=2;xa0针对视频第二增强层,其文件名为DQ
id=1+16×D
id+Q
id=1+16×1+0=17;xa0针对视频第三增强层,其文件名为DQ
id=1+16×D
id+Q
id=1+16×1+1=18。xa0S2、在服务器端,将该视音频分层分片文件的相关信息封装至Torrent文件中。与BitTorrent协议定义的Torrent文件类似,基于SVC的P2PVoD系统的Torrent文件也是采用BenCode编码格式进行编码。但是由于基于SVC的P2PVoD系统与传统的P2PVoD系统在数据特征及分片算法等方面存在差别,为了保证SVC视音频流的同步传输,本发明对Torrent文件的封装格式进行改进。如图3所示,该Torrent文件的封装格式增加了音频采样率、视频帧率、视频帧数、每个GOP(Groupxa0ofxa0Pictures,画面组)所含视频帧数、每个视频分片所含GOP数目、SVC分层数(包括SVC视频层和音频层)、音频层文件长度、音频层文件标识符、各视频分层长度和标识符(诸如视频基础层文件长度、视频基础层文件识别符、视频第一增强层文件长度、视频第一增强层文件标识符等)、各视音频分片长度和视音频分片总数中至少一个,其中图中的长度单位为字节。xa0S3、启动视音频分层分片下载线程,客户端从服务器下载Torrent文件,从xa0该Torrent文件中提取该视音频分层分片文件的相关信息初始化视频解码器和音频解码器。xa0S4、客户端下载该视音频分层分片文件,并且根据距离当前的播放时间点t
play的远近将视音频分层分片文件由近至远划分为高、中、低三个优先级区域,且其下载优先级逐渐降低。xa0如图4所示,高优先级区域(HP:Highxa0Priortiy)的时长为h且距离播放时间点t
play最近。在播放视音频之前,高优先级区域内面向播放时间点t
play一侧的部分视音频数据缓存于下载缓冲区,且该部分视音频数据的缓冲时长为PRE
TIME(诸如5s、10s等)、下载层数为L
pre,其中该缓冲时长PRE
TIME可以根据实际情况人为设定,初始的下载层数L
pre可以根据初始的网络带宽确定且至少包括音频层和视频基础层。xa0由于视音频分层分片文件播放时必须包括音频层分片和视频基础层分片,而视频增强层分片的作用在于提高视音频播放的品质,并且在下载SVC视音频的过程中网络带宽会不断变化,为了保证视音频播放的流畅性和品质,客户端周期性地判断是否需要重新确定该下载缓冲区的下载层数L
pre。设定下载缓冲区中待播放视音频数据的时长为t
buf=t
schedule-t
play,其中t
schedule表示当前的下载时间点,t
play表示当前的播放时间点。t
buf随着下载速率的变化而变化,当下载速率大于播放速率时,t
buf不断增大;当下载速率小于播放速率时,t
buf不断减小。当t
buf减小至下限阈值时表示下载速率过慢,为了保证视音频的流畅播放,在至少下载音频层分片和视频基础层分片的基础上,减少下载一层视频增强层分片,下载层数减一L
pre--;当t
buf增大至上限阈值时表示下载速率过高,为了提高视音频播放的品质,在不超过视频分层总数的基础上,增加下载一层视频增强层分片,下载层数加一L
pre++。xa0由于等时长的音频层分片要比视频基础层分片小得多,并且音频层分片的下载速度更快,因此在高级优先级区域中视音频数据的下载顺序为:音频层分片,视频基础层分片,视频增强层分片。xa0中优先级区域(MP:Middlexa0Priority)的时长为u且距离当前的播放时间点t
play较近,下载优先级居中。随着时间的推移会进入高优先级区域,因此是播放的紧急性和稀缺分片扩散速度上的一个折中,采用分层最少优先(Rarest-First)策略。xa0低优先级区域(LP:Lowxa0Priority)为剩余调度区域且距离当前的播放时间点t
play最远,下载优先级最低。为了提高稀缺分片扩散的速度,同样采用分层最少优先(Rarest-First)策略。xa0S5、客户端客户端将该视音频分层分片文件中的SVC视频数据和音频数据分别送往对应的视频解码器和音频解码器进行解码,并播放解码后的视音频数据。由于基于SVC的P2PVoD系统的视频是SVC视频流,当出现播放不同步时,对视频的调整会涉及到数层视频,处理起来比较复杂,而音频只有一层,处理起来更简单可靠,而且如图1所示人们对声音落后于图像比声音超前于图像要宽容许多,因此本发明在播放视音频时,以SVC视频流为主媒体流,音频流为从媒体流,同步音频流到SVC视频流。因为SVC视频流的视频块Videoxa0Chunk解码比较复杂,从解码视频块Videoxa0Chunk到播放该视频块Videoxa0Chunk会有一定延迟,而解码相应的音频分片Audioxa0Piece则非常快,因此本发明不以解码一个视频块Videoxa0Chunk的时间作为解码相应音频分片Audioxa0Piece的同步时间,而是以开始播放视频块Videoxa0Chunk的时间作为解码对应音频分片Audioxa0Piece的同步时间。具体步骤为:xa0首先,设定播放同步时钟Tvideo来记录视频分片数据的播放时间;xa0接着,启动视频播放线程,从下载缓冲区中获取缓存的视频分片数据进行解码播放,并更新播放同步时钟Tvideo;xa0最后,启动音频播放线程,根据播放同步时钟Tvideo从下载缓冲区中获取缓存的音频分片数据进行解码播放,从而实现视音频播放同步。xa0在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。xa0尽管已经示出和描述了本发明的实施例,本领域的普通技术人员可以理解:在不脱离本发明的原理和宗旨的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由权利要求及其等同物限定。xa0